import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

/**
 * 创建线程池的方法
 */
public class ThreadPoolExample1 {
    public static void main(String[] args) {
        // 1.用来处理大量短时间工作任务的线程池, 如果池中没有可用的线程将创建新的线程, 如果线程空闲60秒将收回并移出缓存
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        // 2.创建一个操作无界队列且固定大小线程池
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3) ;
        // 3.创建一个操作无界队列且只有一个工作线程的线程池
        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
        // 4.创建一个单线程执行器, 可以在给定时间后执行或定期执行.
        ScheduledExecutorService singleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor();
        // 5.创建一个指定大小的线程池, 可以在给定时间后执行或定期执行.
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
        // 6.创建一个指定大小(不传入参数, 为当前机器CPU核心数)的线程池, 并行地处理任务, 不保证处理顺序
        Executors.newWorkStealingPool();
    }
}
